#define SIZE 9
#define nr 'n'
#define bl 'b'
#define ab ' '
#define X 'x'
#define tmp 'X'
/*--------------------------------------------------------------------------------------------------------------------------------------------*/
void nr_detection(int  tab[SIZE][SIZE]);
int  nr_case_haut_gauche(int ,int,int);
int  nr_case_haut_centre(int ,int,int);   
int  nr_case_haut_droite(int ,int,int);  
int  nr_case_milieu_gauche(int ,int,int);  
int  nr_case_milieu_droite(int ,int,int);  
int  nr_case_bas_gauche(int ,int,int);   
int  nr_case_bas_centre(int ,int,int);  
int  nr_case_bas_droite(int ,int,int);
/*--------------------------------------------------------------------------------------------------------------------------------------------*/
													   /*VARIABLES GENERALE*/
int tab[SIZE+1][SIZE];
int case_next;
/*--------------------------------------------------------------------------------------------------------------------------------------------*/
														/*FONCTION PRINCIPALE DE DETECTION DES PIONS N*/
void nr_detection(int  tab[SIZE][SIZE])
{
 int i;
 int j;
 int pion_b=0;
 int pion_n=0;
 int pion_x=0;
 int  save;
 for(i=0 ; i<SIZE ; i++)
 {
  for(j=0 ; j<SIZE ; j++)
  {
   if(tab[i][j]==nr)
   {
	if(i>1 && j>1)
    tab[i-1][j-1]=nr_case_haut_gauche(tab[i-1][j-1],i,j);
	if(i>1)
	tab[i-1][j]=nr_case_haut_centre(tab[i-1][j],i,j);   
	if(i>1 && j<SIZE-1)
	tab[i-1][j+1]=nr_case_haut_droite(tab[i-1][j+1],i,j);   	   
    if(j>1)
	tab[i][j-1]=nr_case_milieu_gauche(tab[i][j-1],i,j);   
	if(j<SIZE-1)
	tab[i][j+1]=nr_case_milieu_droite(tab[i][j+1],i,j);   
	if(i<SIZE-1 && j>1)
	tab[i+1][j-1]=nr_case_bas_gauche(tab[i+1][j-1],i,j);   
	if(i<SIZE-1)
	tab[i+1][j]=nr_case_bas_centre(tab[i+1][j],i,j);   
	if(i<SIZE-1 && j<SIZE-1)
	tab[i+1][j+1]=nr_case_bas_droite(tab[i+1][j+1],i,j);   
   }
  }
 }
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_haut_gauche(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i>2 && j>2)
  {
   do
   {
    if(i>2 && j>2)
	{
	case_next=tab[i-2][j-2];
    i=i-1;
    j=j-1;
	}
	else
	case_next=ab;
   }
   while(case_next==nr);
   if(case_next==nr)
   {
    tab[i-1][j-1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i-1][j-1]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_haut_centre(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i>2)
  {
   do
   {
    if(i>2)
	{
	case_next=tab[i-2][j];
    i=i-1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i-1][j]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i-1][j]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_haut_droite(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i>2 && j<SIZE-2)
  {
   do
   {
    if(i>2 && j<SIZE-2)
	{
	case_next=tab[i-2][j+2];
    i=i-1;
    j=j+1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i-1][j+1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i-1][j+1]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_milieu_gauche(int  caract,int i,int j)
{
if(caract==bl)
 {
  if(j>2)
  {
   do
   {
    if(j>2)
	{
	case_next=tab[i][j-2];
    j=j-1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i][j-1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i][j-1]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_milieu_droite(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(j<SIZE-2)
  {
   do
   {
    if(j<SIZE-2)
	{
	case_next=tab[i][j+2];
    j=j+1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i][j+1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i][j+1]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_bas_gauche(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i<SIZE-2 && j>2)
  {
   do
   {
    if(i<SIZE-2 && j>2)
	{
	case_next=tab[i+2][j-2];
    i=i+1;
    j=j-1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i+1][j-1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i+1][j-1]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_bas_centre(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i<SIZE-2)
  {
   do
   {
    if(i<SIZE-2)
	{
	case_next=tab[i+2][j];
    i=i+1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i+1][j]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i+1][j]=case_next;
   }
  }
 }
 return caract;
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
int  nr_case_bas_droite(int  caract,int i,int j)
{
 if(caract==bl)
 {
  if(i<SIZE-2 && j<SIZE-2)
  {
   do
   {
    if(i<SIZE-2 && j<SIZE-2)
	{
	case_next=tab[i+2][j+2];
    i=i+1;
    j=j+1;
	}
	else
	case_next=ab;
   }
   while(case_next==bl);
   if(case_next==nr)
   {
    tab[i+1][j+1]=case_next;
   }
   else if(case_next==ab)
   {
	case_next=X;
    tab[i+1][j+1]=case_next;
   }
  }
 }
 return caract;
}
/*--------------------------------------------------------------------------------------------------------------------------------------------*/
